#include <stdio.h>

int main(){
    // int ch = getchar(); // getchar用以获取输入字符的ASCII码值(一次读取一个字符)
    // while(ch != EOF){  
    // //当getchar接受到的字符不在对应的ASCII码表时，返回EOF[End Of File]（EOF本质上是宏定义的-1，可以去查资料）
    //     printf("%d\n",ch);
    //     printf("%c\n",ch);
    //     putchar(ch);  // 打印getchar()接收到的字符
    // }

    // 利用getchar函数来确认密码输入
    char password[10] = {0};
    printf("请输入密码:");
    scanf("%s",password);   // %s是接收用户输入的第一串字符串，如果输入abcd(空格)abcd,则只会接收前一串
    /*
    输入一串字符后，需要按下回车scanf()函数才会从输入缓冲区接收数据。
    但是scanf("%s",password)接受的是字符串，其他数据不接收。
    按下回车后，根据ASCII码表，相当于和缓冲区里输入了\n
    此时下面的getchar()函数会自动从输入缓冲区接收到回车--也就是\n对应的ASCII码值（十进制：10）
    接收完毕，getchar函数会return给ch1，然后执行下面判断，从而导致用户无法输入来确认。
    解决办法：在getcha()接受用户输入的Y\N之前，先清空缓冲区。
    清空办法：只需要用getchar()接受即可。

                    ---------------
      输入缓冲区：  | abcd abcd\n  | （假设用户输入abcd(空格)abcd（回车））
                    ---------------
    根据代码，scanf("%s",password)会接收abcd （遇到空白字符/回车会停止接收）
    此时：
                    --------------
      输入缓冲区：  | (空格)abcd\n | （scanf接收abcd后）
                    --------------
    如果不清空缓冲区，下面的getchar函数会接收缓冲区中的空格符号，导致用户无法输入Y\N                
    */

    while(getchar() != '\n'); // 清空缓冲区
    // 解释代码：如果缓冲区中剩余的元素不是回车，则一直用getchar函数接收，直到遇到回车，退出循环）
    
    printf("请确认(Y/N):");
    int ch1 = getchar();
    if ('Y' == ch1){
        printf("yes");
    }
    else if('N' == ch1){
        printf("no");
    }


}